// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ITraceControls.cs" company="AzureContrib (Open source library http://azurecontrib.codeplex.com)">
//   Microsoft Public License (Ms-PL)
// </copyright>
// <summary>
//   Contract for something that has trace controls - Methods for checking to see if it is trace enabled.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace AzureContrib.WindowsAzure.Diagnostics
{
	/// <summary>
	/// Contract for something that has trace controls - Methods for checking to see if it is trace enabled.
	/// </summary>
	public interface ITraceControls
	{
		/// <summary>
		/// Gets a value indicating whether tracing is disabled for this <see cref="ITraceSwitchable.Switch"/>?
		/// </summary>
		/// <returns>True if tracing is disabled.</returns>
		bool Disabled { get; }

		/// <summary>
		/// Gets a value indicating whether tracing at the Verbose level is enabled for this <see cref="ITraceSwitchable.Switch"/>?
		/// </summary>
		/// <returns>True if tracing is enabled.</returns>
		bool VerboseEnabled { get; }

		/// <summary>
		/// Gets a value indicating whether tracing at the Info level is enabled for this <see cref="ITraceSwitchable.Switch"/>?
		/// </summary>
		/// <returns>True if tracing is enabled.</returns>
		bool InformationEnabled { get; }

		/// <summary>
		/// Gets a value indicating whether tracing at the Warning level is enabled for this <see cref="ITraceSwitchable.Switch"/>?
		/// </summary>
		/// <returns>True if tracing is enabled.</returns>
		bool WarningEnabled { get; }

		/// <summary>
		/// Gets a value indicating whether tracing at the Error level is enabled for this <see cref="ITraceSwitchable.Switch"/>?
		/// </summary>
		/// <returns>True if tracing is enabled.</returns>
		bool ErrorEnabled { get; }

		/// <summary>
		/// Gets a value indicating whether tracing at the Error level is enabled for this <see cref="ITraceSwitchable.Switch"/>?
		/// </summary>
		/// <returns>True if tracing is enabled.</returns>
		bool CriticalEnabled { get; }
	}
}